package com.myscala.scala

/*
流程控制
 */
object ProcessControl {
  def main(args: Array[String]): Unit = {
    /*
    顺序结构
     */
    println("Hello World")
    println(1+2+"Hello World"+3+2*2+(4+5))  // 3Hello World16 ?

    /*
    分支结构
     */
    var age = 19
    if ( age >= 18 & age < 500) {
      println("你已经成年了")
    } else if (age > 500) {
      println("你已经成精了")
    } else {
      println("你还是个孩子")
    }
    // Scala 中没有三元运算符 可以使用 if else 代替
    var result = if (age >= 18) "你已经成年了" else "你还是个孩子"
    println(result)

    /*
    循环结构
     */
    for ( i <- 1 to 10){
      println(i)
    }
    // 九九乘法表
    for ( i <- 1 to 9 ) {
      for (j <- 1 to i) {
// Scala 2.10.0 为我们提供了三种字符串插值的方式，分别是 s, f 和  raw。它们都是定义在 StringContext 中的方法。
        //print(j + "*" + i + "=" + i * j + "\t")
        //在Scala中变量和字符串的拼接可以简化为占位符
        print(s"${j} * ${i} = ${i*j}\t")    // s , f 正常打印乘法表，raw会将 "\t" 一起打印
      }
      println()
    }

    // 简写
    for (i <- 1 to 9 ; j <- 1 to i) {
      print(s"${j} * ${j} = ${i*j}\t")
      if(i==j) println()
    }

    // 循环条件 守卫，步长
    for (i <- 1 to 10 if i%2 == 0) println(i)

    var a: Array[Int]=Array(1,2,3,4,5)

    var e=for (i  <- 1 to 10 if i%2==0 ) yield i
    println(e)

    for (i <- a ) {
      println(i)    // 1 2 3 4 5
    }




  }
}










